package com.tiantian.subject.service;


import com.tiantian.subject.domain.dto.RecoverSubjectDto;
import com.tiantian.subject.domain.entity.Subject;
import com.tiantian.subject.domain.vo.SubjectOrderVo;
import com.tiantian.subject.domain.vo.SubjectVo;

import java.util.List;
import java.util.Map;

/**
 * (Subject)表服务接口
 *
 * @author tiantian
 * @since 2023-10-12 17:00:21
 */
public interface SubjectService {

    /**
     * 通过ID查询单条数据
     *
     * @param topicId 主键
     * @return 实例对象
     */
    Subject getSubjectDetail(String topicId);

    /**
     * 通过实体作为筛选条件查询查询VO集合
     */
    List<SubjectVo> selectTopicVOList(Subject subject);

    /**
     * 新增数据
     *
     * @param Subject 实例对象
     * @return 新增标记
     */
    Map<String, Object> setTopic(Subject Subject);

    /**
     * 修改数据
     *
     * @param Subject 实例对象
     * @return 删除标记
     */
    Boolean updateById(Subject Subject);

    /**
     * 逻辑删除
     */
    Boolean logicalDeleteById(String topicId, Long userId);

    /**
     * 物理删除
     */
    Boolean deleteById(String topicId, Long userId);

    /**
     * 获取题目总数
     */
    int getSubjectTotal();

    /**
     * 查询题目列表
     */
    List<SubjectVo> getSubjectList(Subject subject);

    /**
     * 获取题目序号使用情况
     */
    List<SubjectOrderVo> getSubjectOrderList();

    List<SubjectVo> selectRecycleBin(Subject subject);

    boolean checkSubjectExist(String topicId);

    int recoverSubject(RecoverSubjectDto recoverSubjectDto);
}


